package sshFile;

/**  * commons-net-2.0.jar是工程依赖包   */  

import java.io.InputStream;  
import java.io.PrintStream;  
import org.apache.commons.net.telnet.TelnetClient;  

public class NetTelnet {  
    private TelnetClient telnet = new TelnetClient();  
    private InputStream in;  
    private PrintStream out;  
    private char prompt = '$';  

    // 普通用户结束  
    public NetTelnet(String ip, int port, String user, String password) {  
        try {  
            telnet.connect(ip, port);  
            in = telnet.getInputStream();  
            out = new PrintStream(telnet.getOutputStream());  
            // 根据root用户设置结束符  
            this.prompt = user.equals("root") ? '#' : '$';  
        //    login(user, password);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }


    public boolean  getConnect(String ip, int port, String user, String password) {
        boolean  flag=false;
        try {

            telnet.connect(ip, port);
            in = telnet.getInputStream();
            out = new PrintStream(telnet.getOutputStream());
            // 根据root用户设置结束符
            this.prompt = user.equals("root") ? '#' : '$';
            login(user, password);
            flag=true;
        } catch (Exception e) {
            flag=false;
            e.printStackTrace();
        }

        return flag;

    }


        /** * 登录 * * @param user * @param password */
    public void login(String user, String password) {  
        readUntil("login:");  
        write(user);  
        readUntil("Password:");  
        write(password);  
        readUntil(prompt + " ");  
    }  

    /** * 读取分析结果 * * @param pattern * @return */  
    public String readUntil(String pattern) {  
        try {  
            char lastChar = pattern.charAt(pattern.length() - 1);  
            StringBuffer sb = new StringBuffer();  
            char ch = (char) in.read();  
            while (true) {  
                sb.append(ch);  
                if (ch == lastChar) {  
                    if (sb.toString().endsWith(pattern)) {  
                        return sb.toString();  
                    }  
                }  
                ch = (char) in.read();  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        return null;  
    }  

    /** * 写操作 * * @param value */  
    public void write(String value) {  
        try {  
            out.println(value);  
            out.flush();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  

    /** * 向目标发送命令字符串 * * @param command * @return */  
    public String sendCommand(String command) {  
        try {  
            write(command);  
            return readUntil(prompt + " ");  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        return null;  
    }  

    /** * 关闭连接 */  
    public void disconnect() {  
        try {  
            telnet.disconnect();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  

    public static void main(String[] args) {  
        try {  
            System.out.println("启动Telnet...");  
        	String ip = "132.225.250.5";
			int port = 31114;
			String user = "SZHQ";
			String password = "Huqiao@123"; 
            NetTelnet telnet = new NetTelnet(ip, port, user, password);  
           
            
            String r = telnet.sendCommand("LGI:OP=\"SZHQ\",PWD=\"Huqiao@123\";");  
            System.out.println("登录成功");  
            String r1 = telnet.sendCommand("LST NE:;");  
            
            System.out.println("显示结果");  
            System.out.println(r1);  
           
            telnet.disconnect();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}  
